# နိဒါန်း[[introduction]]

Hugging Face သင်တန်းမှ ကြိုဆိုပါတယ်။ ဒီနိဒါန်းက သင် အလုပ်လုပ်ရန် ပတ်ဝန်းကျင် (working environment) ကို တည်ဆောက်ရာမှာ လမ်းညွှန်ပေးမှာပါ။ သင်တန်းကို အခုမှ စတင်သူများအတွက်၊ [Chapter 1](/course/chapter1) ကို အရင်ဆုံး လေ့လာပြီးမှ၊ သင်ကိုယ်တိုင် code တွေကို စမ်းသပ်နိုင်ဖို့ သင့်ပတ်ဝန်းကျင်ကို ပြန်လည်တည်ဆောက်ဖို့ ကျွန်တော်တို့ အကြံပြုလိုပါတယ်။

ဒီသင်တန်းမှာ ကျွန်တော်တို့ အသုံးပြုမယ့် library တွေအားလုံးဟာ Python packages တွေအဖြစ် ရရှိနိုင်ပါတယ်။ ဒါကြောင့် ဒီနေရာမှာ သင်လိုအပ်တဲ့ Python ပတ်ဝန်းကျင်ကို ဘယ်လိုတည်ဆောက်ရမလဲ၊ သီးခြား library တွေကို ဘယ်လို install လုပ်ရမလဲဆိုတာကို ပြသသွားမှာပါ။ 

သင့်ရဲ့ အလုပ်လုပ်ရန် ပတ်ဝန်းကျင်ကို တည်ဆောက်ဖို့ နည်းလမ်းနှစ်ခုကို ကျွန်တော်တို့ ဖော်ပြပေးပါမယ်- Colab notebook ကို အသုံးပြုခြင်း ဒါမှမဟုတ် Python virtual environment ကို အသုံးပြုခြင်းတို့ ဖြစ်ပါတယ်။ သင်နဲ့ အသင့်တော်ဆုံးနည်းလမ်းကို လွတ်လပ်စွာ ရွေးချယ်နိုင်ပါတယ်။ စတင်သူများအတွက်ကတော့ Colab notebook ကို အသုံးပြုပြီး စတင်ဖို့ ကျွန်တော်တို့ အထူးအကြံပြုပါတယ်။

ကျွန်တော်တို့ဟာ Windows system အကြောင်းကို ဖော်ပြသွားမှာ မဟုတ်ပါဘူး။ သင် Windows ကို အသုံးပြုနေတယ်ဆိုရင် Colab notebook ကို အသုံးပြုပြီး လိုက်လုပ်ဖို့ ကျွန်တော်တို့ အကြံပြုပါတယ်။ သင် Linux distribution ဒါမှမဟုတ် macOS ကို အသုံးပြုနေတယ်ဆိုရင်တော့ ဒီနေရာမှာ ဖော်ပြထားတဲ့ နည်းလမ်းနှစ်ခုလုံးကို အသုံးပြုနိုင်ပါတယ်။

သင်တန်းရဲ့ အများစုကတော့ Hugging Face account ရှိဖို့ လိုအပ်ပါတယ်။ အခုပဲ account တစ်ခု ဖန်တီးဖို့ ကျွန်တော်တို့ အကြံပြုပါတယ်- [account တစ်ခု ဖန်တီးပါ](https://huggingface.co/join)။

## Google Colab notebook ကို အသုံးပြုခြင်း[[using-a-google-colab-notebook]]

Colab notebook ကို အသုံးပြုတာဟာ အလွယ်ကူဆုံး တည်ဆောက်မှုပုံစံ ဖြစ်ပါတယ်၊ သင်ရဲ့ browser ထဲမှာ notebook တစ်ခုကို ဖွင့်လိုက်ရုံနဲ့ တိုက်ရိုက် code ရေးလို့ရပါပြီ။

သင် Colab နဲ့ မရင်းနှီးသေးဘူးဆိုရင် [နိဒါန်း](https://colab.research.google.com/notebooks/intro.ipynb) ကို အရင်ဆုံး လေ့လာဖို့ ကျွန်တော်တို့ အကြံပြုပါတယ်။ Colab က GPU ဒါမှမဟုတ် TPU လိုမျိုး အရှိန်မြှင့် hardware အချို့ကို အသုံးပြုခွင့်ပေးပြီး၊ အလုပ်ပမာဏ နည်းတဲ့ ကိစ္စတွေအတွက်တော့ အခမဲ့ ဖြစ်ပါတယ်။

Colab ထဲမှာ ကျွမ်းကျင်စွာ သွားလာနိုင်ပြီဆိုတာနဲ့၊ notebook အသစ်တစ်ခု ဖန်တီးပြီး စနစ်တကျ စတင်လိုက်ပါ။

<div class="flex justify-center">
<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter0/new_colab.png" alt="An empty colab notebook" width="80%"/>
</div>

နောက်တစ်ဆင့်ကတော့ ဒီသင်တန်းမှာ ကျွန်တော်တို့ အသုံးပြုမယ့် library တွေကို install လုပ်ဖို့ ဖြစ်ပါတယ်။ install လုပ်ဖို့အတွက် Python ရဲ့ package manager ဖြစ်တဲ့ `pip` ကို ကျွန်တော်တို့ အသုံးပြုပါမယ်။ notebooks တွေမှာ `!` character ကို အရှေ့မှာ ထားခြင်းဖြင့် system commands တွေကို run နိုင်ပါတယ်။ ဒါကြောင့် 🤗 Transformers library ကို အောက်ပါအတိုင်း install လုပ်နိုင်ပါတယ်-

```
!pip install transformers
```

သင့်ရဲ့ Python runtime ထဲမှာ import လုပ်ခြင်းဖြင့် package ကို မှန်ကန်စွာ install လုပ်ထားခြင်းရှိမရှိ စစ်ဆေးနိုင်ပါတယ်-

```
import transformers
```

<div class="flex justify-center">
<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter0/install.gif" alt="A gif showing the result of the two commands above: installation and import" width="80%"/>
</div>

ဒါက 🤗 Transformers ရဲ့ အလွန်ပေါ့ပါးတဲ့ version တစ်ခုကို install လုပ်တာ ဖြစ်ပါတယ်။ အထူးသဖြင့်၊ သီးခြား machine learning frameworks (PyTorch ဒါမှမဟုတ် TensorFlow လိုမျိုး) တွေ install လုပ်ထားတာ မရှိပါဘူး။ ကျွန်တော်တို့ library ရဲ့ မတူညီတဲ့ features များစွာကို အသုံးပြုရမှာဖြစ်တာကြောင့်၊ မော်ဒယ်တိုင်းအတွက် လိုအပ်တဲ့ dependencies အားလုံးပါဝင်တဲ့ development version ကို install လုပ်ဖို့ ကျွန်တော်တို့ အကြံပြုပါတယ်-

```
!pip install transformers[sentencepiece]
```

ဒါက အချိန်အနည်းငယ် ကြာပါလိမ့်မယ်၊ ဒါပေမယ့် ပြီးသွားရင်တော့ သင်တန်းတစ်လျှောက်လုံးအတွက် အဆင်သင့်ဖြစ်ပါပြီ။

## Python virtual environment ကို အသုံးပြုခြင်း[[using-a-python-virtual-environment]]

သင် Python virtual environment ကို အသုံးပြုဖို့ ပိုကြိုက်တယ်ဆိုရင်၊ ပထမအဆင့်ကတော့ သင့် system မှာ Python ကို install လုပ်ဖို့ပါပဲ။ စတင်ဖို့အတွက် [ဒီလမ်းညွှန်](https://realpython.com/installing-python/) ကို လိုက်နာဖို့ ကျွန်တော်တို့ အကြံပြုပါတယ်။

Python ကို install လုပ်ပြီးတာနဲ့၊ သင့် terminal မှာ Python commands တွေကို run နိုင်ပါလိမ့်မယ်။ နောက်ထပ်အဆင့်တွေ မဆက်ခင် မှန်ကန်စွာ install လုပ်ထားခြင်းရှိမရှိ သေချာစေဖို့ `python --version` လို့ရိုက်ပြီး စစ်ဆေးနိုင်ပါတယ်။ ဒါက သင့် system မှာ လက်ရှိရရှိနိုင်တဲ့ Python version ကို ပြသပေးပါလိမ့်မယ်။

သင့် terminal မှာ `python --version` လိုမျိုး Python command တစ်ခုကို run တဲ့အခါ၊ သင် command ကို run နေတဲ့ program ကို သင့် system ရဲ့ "အဓိက" Python လို့ တွေးကြည့်သင့်ပါတယ်။ ဒီအဓိက install လုပ်ထားတဲ့ Python မှာ packages တွေ မထည့်ဘဲ ထားပြီး၊ သင်အလုပ်လုပ်တဲ့ application တစ်ခုစီအတွက် သီးခြား environments တွေ ဖန်တီးဖို့ အသုံးပြုဖို့ ကျွန်တော်တို့ အကြံပြုပါတယ်။ ဒီနည်းနဲ့ application တစ်ခုစီမှာ သူ့ဘာသာသူ dependencies တွေနဲ့ packages တွေ ရှိနိုင်ပြီး၊ အခြား application တွေနဲ့ ဖြစ်နိုင်ချေရှိတဲ့ လိုက်ဖက်မှုပြဿနာတွေအတွက် သင်စိုးရိမ်စရာ မလိုပါဘူး။

Python မှာ ဒါကို [*virtual environments*](https://docs.python.org/3/tutorial/venv.html) တွေနဲ့ လုပ်ဆောင်ပါတယ်။ ဒါတွေဟာ သူ့ဘာသာသူ ပါဝင်တဲ့ directory trees တွေဖြစ်ပြီး တစ်ခုစီမှာ သီးခြား Python version တစ်ခုနဲ့ application လိုအပ်တဲ့ packages အားလုံး ပါဝင်ပါတယ်။ ဒီလို virtual environment တစ်ခု ဖန်တီးခြင်းကို ကိရိယာအမျိုးမျိုးနဲ့ လုပ်ဆောင်နိုင်ပေမယ့်၊ ကျွန်တော်တို့ကတော့ အဲဒီရည်ရွယ်ချက်အတွက် တရားဝင် Python package ဖြစ်တဲ့ [`venv`](https://docs.python.org/3/library/venv.html#module-venv) ကို အသုံးပြုပါမယ်။

ပထမဆုံး၊ သင်ရဲ့ application ကို ထားချင်တဲ့ directory ကို ဖန်တီးပါ - ဥပမာ၊ သင်ရဲ့ home directory ရဲ့ root မှာ *transformers-course* လို့ခေါ်တဲ့ directory အသစ်တစ်ခု ပြုလုပ်ချင်ပါလိမ့်မယ်-

```
mkdir ~/transformers-course
cd ~/transformers-course
```

ဒီ directory ထဲကနေ Python ရဲ့ `venv` module ကို အသုံးပြုပြီး virtual environment တစ်ခု ဖန်တီးပါ။

```
python -m venv .env
```

သင်ရဲ့ ဗလာဖြစ်နေတဲ့ folder ထဲမှာ *.env* လို့ခေါ်တဲ့ directory တစ်ခုကို အခု သင်တွေ့ရပါလိမ့်မယ်-

```
ls -a
```

```out
.      ..    .env
```

ဒီ `activate` နဲ့ `deactivate` scripts တွေနဲ့ သင်ရဲ့ virtual environment ထဲကို ဝင်နိုင်ပြီး ပြန်ထွက်နိုင်ပါတယ်-

```
# virtual environment ကို ဖွင့်
source .env/bin/activate

# virtual environment ကို ပိတ်
deactivate
```

`which python` command ကို run ခြင်းဖြင့် environment ကို ဖွင့်ထားခြင်းရှိမရှိ သေချာအောင် စစ်ဆေးနိုင်ပါတယ်။ အကယ်၍ ၎င်းက virtual environment ကို ညွှန်ပြနေတယ်ဆိုရင် သင်အောင်မြင်စွာ ဖွင့်ထားတာ ဖြစ်ပါတယ်။

```
which python
```

```out
/home/<user>/transformers-course/.env/bin/python
```

### Dependencies တွေကို Install လုပ်ခြင်း[[installing-dependencies]]

Google Colab instances တွေကို အသုံးပြုခြင်းနဲ့ ပတ်သက်တဲ့ ယခင်အပိုင်းမှာလိုပဲ၊ ဆက်လက်လုပ်ဆောင်ဖို့ လိုအပ်တဲ့ packages တွေကို အခု သင် install လုပ်ဖို့ လိုအပ်ပါလိမ့်မယ်။ ထပ်မံပြီးတော့ `pip` package manager ကို အသုံးပြုပြီး 🤗 Transformers ရဲ့ development version ကို install လုပ်နိုင်ပါတယ်-

```
pip install "transformers[sentencepiece]"
```

အခု သင်အားလုံး အဆင်သင့်ဖြစ်ပြီ၊ စတင်ဖို့ အသင့်ပါပဲ။

## ဝေါဟာရ ရှင်းလင်းချက် (Glossary)

*   **Working Environment**: ဆော့ဖ်ဝဲလ် သို့မဟုတ် project တစ်ခုကို ဖန်တီး၊ တည်ဆောက်ပြီး run ရန်အတွက် လိုအပ်သော ကိရိယာများနှင့် ဆော့ဖ်ဝဲလ်များ အားလုံးပါဝင်သော စနစ်ပတ်ဝန်းကျင်။
*   **Chapter 1**: သင်တန်း၏ ပထမဆုံး အခန်း။
*   **Python Packages**: Python ပရိုဂရမ်များတွင် အသုံးပြုရန်အတွက် စုစည်းထားသော modules နှင့် code များ။
*   **Python Environment**: Python code များကို run ရန်အတွက် လိုအပ်သော Python interpreter နှင့် libraries များ အားလုံးပါဝင်သော ပတ်ဝန်းကျင်။
*   **Colab Notebook (Google Colab)**: Google မှ ပံ့ပိုးပေးထားသော cloud-based Jupyter Notebook environment တစ်ခုဖြစ်ပြီး Python code များကို web browser မှတစ်ဆင့် run နိုင်စေသည်။ အခမဲ့ GPU/TPU အသုံးပြုခွင့်ပေးသည်။
*   **Python Virtual Environment**: အခြား Python environment များမှ သီးခြားစီ ခွဲထုတ်ထားသော Python environment တစ်ခု။ ၎င်းသည် project တစ်ခုစီအတွက် ၎င်း၏ကိုယ်ပိုင် dependencies များကို ထိန်းသိမ်းရန် ကူညီပေးသည်။
*   **Linux Distribution**: Linux kernel ပေါ် အခြေခံထားသော operating system (ဥပမာ - Ubuntu, Fedora)။
*   **macOS**: Apple Inc. မှ ထုတ်လုပ်ထားသော operating system။
*   **Hugging Face Account**: Hugging Face ပလက်ဖောင်းပေါ်ရှိ သုံးစွဲသူအကောင့်။ ၎င်းသည် မော်ဒယ်များ၊ datasets များနှင့် အခြားအရင်းအမြစ်များကို ဝင်ရောက်ကြည့်ရှုရန် ခွင့်ပြုသည်။
*   **GPU (Graphics Processing Unit)**: ဂရပ်ဖစ်လုပ်ဆောင်မှုအတွက် အထူးဒီဇိုင်းထုတ်ထားသော processor တစ်မျိုးဖြစ်သော်လည်း AI/ML လုပ်ငန်းများတွင် အရှိန်မြှင့်ရန် အသုံးများသည်။
*   **TPU (Tensor Processing Unit)**: Google မှ AI/ML workloads များအတွက် အထူးဒီဇိုင်းထုတ်ထားသော processor တစ်မျိုး။
*   **`pip`**: Python အတွက် package installer (package manager)။ Python packages များကို install လုပ်ရန်နှင့် စီမံခန့်ခွဲရန် အသုံးပြုသည်။
*   **`!` Character**: Jupyter/Colab Notebook များတွင် shell commands များကို run ရန်အတွက် အသုံးပြုသော prefix။
*   **🤗 Transformers Library**: Hugging Face က ထုတ်လုပ်ထားတဲ့ library တစ်ခုဖြစ်ပြီး Transformer မော်ဒယ်တွေကို အသုံးပြုပြီး Natural Language Processing (NLP), computer vision, audio processing စတဲ့ နယ်ပယ်တွေမှာ အဆင့်မြင့် AI မော်ဒယ်တွေကို တည်ဆောက်ပြီး အသုံးပြုနိုင်စေပါတယ်။
*   **Python Runtime**: Python code ကို လက်ရှိ run နေသော ပတ်ဝန်းကျင်။
*   **Machine Learning Frameworks**: Machine learning မော်ဒယ်များကို တည်ဆောက်ရန်၊ လေ့ကျင့်ရန်နှင့် အသုံးပြုရန်အတွက် ကိရိယာများနှင့် library များ စုစည်းမှု (ဥပမာ - PyTorch, TensorFlow)။
*   **PyTorch**: Facebook (ယခု Meta) က ဖန်တီးထားတဲ့ open-source machine learning library တစ်ခုဖြစ်ပြီး deep learning မော်ဒယ်တွေ တည်ဆောက်ဖို့အတွက် အသုံးပြုပါတယ်။
*   **TensorFlow**: Google က ဖန်တီးထားတဲ့ open-source machine learning library တစ်ခုဖြစ်ပြီး deep learning မော်ဒယ်တွေ တည်ဆောက်ဖို့အတွက် အသုံးပြုပါတယ်။
*   **Development Version**: ဆော့ဖ်ဝဲလ်တစ်ခု၏ အပြည့်အစုံသော၊ အင်္ဂါရပ်အားလုံးပါဝင်သည့် ဗားရှင်း (အများအားဖြင့် စမ်းသပ်ခြင်းနှင့် ဖွံ့ဖြိုးတိုးတက်မှုအတွက်)။
*   **Dependencies**: ဆော့ဖ်ဝဲလ်တစ်ခု သို့မဟုတ် library တစ်ခု အလုပ်လုပ်ရန် လိုအပ်သော အခြား library များနှင့် modules များ။
*   **`venv` Module**: Python ၏ တရားဝင် module တစ်ခုဖြစ်ပြီး virtual environments များကို ဖန်တီးရန် အသုံးပြုသည်။
*   **`mkdir`**: Command line command တစ်ခုဖြစ်ပြီး directory (folder) အသစ်တစ်ခုကို ဖန်တီးရန် အသုံးပြုသည်။
*   **`cd`**: Command line command တစ်ခုဖြစ်ပြီး directory တစ်ခုမှ အခြားတစ်ခုသို့ ပြောင်းလဲရန် အသုံးပြုသည်။
*   **`ls -a`**: Command line command တစ်ခုဖြစ်ပြီး လက်ရှိ directory ရှိ ဖိုင်များနှင့် directory များအားလုံးကို (ဝှက်ထားသောဖိုင်များပါ အပါအဝင်) ပြသရန် အသုံးပြုသည်။
*   **`source`**: Unix/Linux shell command တစ်ခုဖြစ်ပြီး script တစ်ခုကို လက်ရှိ shell ထဲတွင် run ရန် အသုံးပြုသည်။
*   **`activate` / `deactivate`**: virtual environment ကို ဖွင့်ရန် သို့မဟုတ် ပိတ်ရန် အသုံးပြုသော scripts များ။
*   **`which python`**: လက်ရှိ shell က အသုံးပြုနေသော `python` executable ၏ လမ်းကြောင်းကို ပြသရန် အသုံးပြုသော command။
*   **`transformers[sentencepiece]`**: `transformers` library ကို `sentencepiece` dependency ပါ အပါအဝင် install လုပ်ရန်အတွက် `pip` syntax။
